@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

echo ==========================================
echo Fat API 项目初始化脚本 (Windows)
echo ==========================================

REM 检查 PostgreSQL 是否安装
where psql >nul 2>&1
if %errorlevel% neq 0 (
    echo 错误: 未找到 psql 命令，请先安装 PostgreSQL
    pause
    exit /b 1
)

REM 检查 Java 是否安装
where java >nul 2>&1
if %errorlevel% neq 0 (
    echo 错误: 未找到 java 命令，请先安装 Java 17+
    pause
    exit /b 1
)

REM 检查 Maven 是否安装
where mvn >nul 2>&1
if %errorlevel% neq 0 (
    echo 错误: 未找到 mvn 命令，请先安装 Maven
    pause
    exit /b 1
)

echo 1. 获取数据库连接信息...
set /p PG_HOST=请输入 PostgreSQL 主机名 [localhost]: 
if "%PG_HOST%"=="" set PG_HOST=localhost

set /p PG_PORT=请输入 PostgreSQL 端口 [5432]: 
if "%PG_PORT%"=="" set PG_PORT=5432

set /p PG_USER=请输入 PostgreSQL 用户名 [postgres]: 
if "%PG_USER%"=="" set PG_USER=postgres

echo 请输入 PostgreSQL 密码:
powershell -Command "$password = Read-Host -AsSecureString; $BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($password); $password = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR); Write-Host $password" > temp_pwd.txt
set /p PG_PASSWORD=<temp_pwd.txt
del temp_pwd.txt

echo.
echo 2. 创建数据库...
set PGPASSWORD=%PG_PASSWORD%
psql -h %PG_HOST% -p %PG_PORT% -U %PG_USER% -c "CREATE DATABASE fat_platform;" 2>nul

if %errorlevel% equ 0 (
    echo ✓ 数据库创建成功
) else (
    echo ⚠ 数据库可能已存在，跳过创建步骤
)

echo 3. 执行数据库初始化脚本...
psql -h %PG_HOST% -p %PG_PORT% -U %PG_USER% -d fat_platform -f src\main\resources\sql\init.sql

if %errorlevel% equ 0 (
    echo ✓ 数据库初始化成功
) else (
    echo ✗ 数据库初始化失败
    pause
    exit /b 1
)

echo 4. 更新配置文件...
set CONFIG_FILE=src\main\resources\application.yml

if exist "%CONFIG_FILE%" (
    REM 备份原配置文件
    copy "%CONFIG_FILE%" "%CONFIG_FILE%.backup" >nul
    
    REM 使用 PowerShell 替换配置
    powershell -Command "(Get-Content '%CONFIG_FILE%') -replace 'localhost:5432', '%PG_HOST%:%PG_PORT%' | Set-Content '%CONFIG_FILE%'"
    powershell -Command "(Get-Content '%CONFIG_FILE%') -replace 'username: postgres', 'username: %PG_USER%' | Set-Content '%CONFIG_FILE%'"
    powershell -Command "(Get-Content '%CONFIG_FILE%') -replace 'password: 123456', 'password: %PG_PASSWORD%' | Set-Content '%CONFIG_FILE%'"
    
    echo ✓ 配置文件更新成功
) else (
    echo ⚠ 未找到配置文件，请手动配置数据库连接信息
)

echo 5. 编译项目...
mvn clean compile -q

if %errorlevel% equ 0 (
    echo ✓ 项目编译成功
) else (
    echo ✗ 项目编译失败
    pause
    exit /b 1
)

echo ==========================================
echo 项目初始化完成！
echo.
echo 启动命令: mvn spring-boot:run
echo API 文档: http://localhost:8080/api/doc.html
echo.
echo 默认管理员账户:
echo 用户名: admin
echo 密码: 123456
echo ==========================================
pause
